﻿using System;
namespace Producers.Kis.Xtee.Riik.Ee.Producer.Kis {
    
    
    public class ClaimBaseFavourClaimData : global::Xtee.Core.Schema.XsdInteger {
        
        public const decimal VÕÕRANDAMISLEPING = 1;
        
        public const decimal KASUTUSLEPING = 2;
        
        public const decimal TEENUSTEOSUTAMINE = 3;
        
        public const decimal LAENUVÕIKREEDIDILEPING = 4;
        
        public const decimal KINDLUSTUS = 5;
        
        public const decimal LIIKLUSKINDLUSTUSESEADUSEST649TULENEVNÕUE = 6;
        
        public const decimal KORTERIOMANIKEÜHISUSESTJAKORTERIOMANDIVALITSEMISESTTULENEVNÕUE = 7;
        
        public const decimal KORTERIÜHISTUNÕUEÜHISTULIIKMEVASTU = 8;
        
        public const decimal VÕLGNIKUANTUDVÕLATUNNISTUSESTVÕIMUUSTTÄITMISEKSKOHUSTAVASTKOKKULEPPESTTULENEVNÕUE = 9;
        
        public const decimal MUU = 10;
        
        public ClaimBaseFavourClaimData(decimal value) : 
                base(value) {
            this.Pattern = @"(1|2|3|4|5|6|7|8|9|10)";
            this.Validate();
            string annot = null;
            if (Value == 1) {
                annot = "võõrandamisleping";
            }
            if (Value == 2) {
                annot = "kasutusleping";
            }
            if (Value == 3) {
                annot = "teenuste osutamine";
            }
            if (Value == 4) {
                annot = "laenu- või kreedidileping";
            }
            if (Value == 5) {
                annot = "kindlustus";
            }
            if (Value == 6) {
                annot = "liikluskindlustuse seadusest (§6, §49) tulenev nõue";
            }
            if (Value == 7) {
                annot = "korteriomanike ühisusest ja korteriomandi valitsemisest tulenev nõue";
            }
            if (Value == 8) {
                annot = "korteriühistu nõue ühistu liikme vastu";
            }
            if (Value == 9) {
                annot = "võlgniku antud võlatunnistusest või muust täitmiseks kohustavast kokkuleppest tulenev nõue";
            }
            if (Value == 10) {
                annot = "muu";
            }
            if (annot!=null) {
                this._annotation = annot;
            }
            else {
                throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
            }
        }
        
        public ClaimBaseFavourClaimData(string value) : 
                base(value) {
            this.Pattern = @"(1|2|3|4|5|6|7|8|9|10)";
            this.Validate();
            string annot = null;
            if (Value == 1) {
                annot = "võõrandamisleping";
            }
            if (Value == 2) {
                annot = "kasutusleping";
            }
            if (Value == 3) {
                annot = "teenuste osutamine";
            }
            if (Value == 4) {
                annot = "laenu- või kreedidileping";
            }
            if (Value == 5) {
                annot = "kindlustus";
            }
            if (Value == 6) {
                annot = "liikluskindlustuse seadusest (§6, §49) tulenev nõue";
            }
            if (Value == 7) {
                annot = "korteriomanike ühisusest ja korteriomandi valitsemisest tulenev nõue";
            }
            if (Value == 8) {
                annot = "korteriühistu nõue ühistu liikme vastu";
            }
            if (Value == 9) {
                annot = "võlgniku antud võlatunnistusest või muust täitmiseks kohustavast kokkuleppest tulenev nõue";
            }
            if (Value == 10) {
                annot = "muu";
            }
            if (annot!=null) {
                this._annotation = annot;
            }
            else {
                throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
            }
        }
        
        public ClaimBaseFavourClaimData() : 
                base(new decimal()) {
        }
        
        public static bool TryParse(string value, out global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.ClaimBaseFavourClaimData result) {
            try {
                result = new global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.ClaimBaseFavourClaimData(value);
                return true;
            }
            catch (System.Exception ) {
                result = null;
                return false;
            }
        }
        
        public static implicit operator Decimal (ClaimBaseFavourClaimData value) {
            return value.Value;
        }
        
        public static implicit operator ClaimBaseFavourClaimData (decimal value) {
            return new ClaimBaseFavourClaimData(value);
        }
    }
}
